package com.hzjy.api.mapper;

import com.hzjy.api.beans.HzjyCollection;
import com.hzjy.api.beans.HzjyProduct;
import com.hzjy.common.utils.PageData;

import java.util.List;
import java.util.Map;

public interface ApiProductMapper {
    /**
     * 作品主页查询
     */
    List<PageData> getIndexWorksList(PageData pd);

    Integer getIndexWorksNum();

    /**
     * 项目主页查询
     */
    List<PageData> getIndexProjectList(PageData pd);

    Integer getIndexProjectNum();

    /**
     * 版权交易页查询
     */
    List<PageData> getProductList(PageData pd);

    Integer getProductListNum(PageData pd);

    /**
     * 首页搜索框查询
     */
    List<PageData> getProductListBySearchInput(PageData pd);

    Integer getProductListNumBySearchInput(PageData pd);

    /**
     * 获取用户分类状态的数量
     */
    List<PageData> getTradingStateNum(Long userId);

    /**
     * 获取我的挂牌分页的总页数和条数
     */
    PageData getMyTradingNum(PageData pd);

    /**
     * 获取我的挂牌选中分页的List集合
     */
    List<PageData> getMyTradingList(PageData pd);

    /**
     * 新增产品信息
     */
    Long insertHzjyProduct(PageData pd);

    /**
     * 修改产品信息
     */
    void updateHzjyProduct(PageData pd);

    /**
     * 挂牌协议签订完成
     */
    void tradingAgreement(PageData pd);

    /**
     * 上架
     */
    void upTrading(PageData pd);

    /**
     * 下架
     */
    void lowTrading(PageData pd);

    /**
     * 提交审核
     */
    void submitApprove(PageData pd);

    PageData selectHzjyProductByKeyId(Long productId);

    /**
     * 查询产品
     *
     * @param productId 产品ID
     * @return 产品
     */
    public HzjyProduct selectHzjyProductById(Long productId);

    /**
     * 新增产品信息
     */
    Long insertHzjyProductByBeans(HzjyProduct hzjyProduct);

    /**
     * 修改产品信息
     */
    void updateHzjyProductByBeans(HzjyProduct hzjyProduct);

    /**
     * 小程序查询所有满足条件的作品集合
     */
    List<PageData> wxWorksList(PageData pd);

    /**
     * 小程序查询所有满足条件的项目集合
     */
    List<PageData> wxProjectList(PageData pd);

    /**
     * 小程序查询满足筛选条件的项目集合
     */
    List<PageData> wxScreeningProjectList(PageData pd);

    /**
     * 小程序查询满足筛选条件的作品集合
     */
    List<PageData> wxScreeningWorksList(PageData pd);

    /**
     * PC端查询截止到某段时间的用户和作品数量
     *
     * @param pd
     * @return
     */
    List<PageData> queryHotList(PageData pd);

    /**
     * PC端 增加浏览次数
     *
     * @param productId
     * @return
     */
    int updateSeeNum(Long productId);

    /**
     * 查询所有挂牌成功切已上架的数据
     *
     * @return
     */
    List<HzjyProduct> selectAll();

    /**
     * 查询签约超时的挂牌
     * @return
     */
    List<HzjyProduct> querySignTimeOutProduct();

    /**
     * 查询该用户是否收藏
     * @param hzjyCollection
     * @return
     */
    Boolean selectProductIsCollection(HzjyCollection hzjyCollection);

    /**
     * 查询挂牌数，摘牌数
     * @return
     */
    Map<String, Integer> TradeDelistNum();

}
